Microservices
Updated On 24 March 2024 | Min(s) read

Notification Delivery Embedded with Account Aggregation - Configuration

The Notification Delivery feature is added to Account Aggregation within the API and Ingester event flow. The following table describes the list of configurations required for enabling Notification Delivery.

Microservice File Name Variable Name Variable Value
Holdings  Start script temn.msf.stream.kafka.bootstrap.servers <eventstore-host-ip>:22004
Generic Configuration Start script  temn.msf.stream.kafka.bootstrap.servers <eventstore-host-ip>:22004
Event Store kafka.yaml KAFKA_AUTO_CREATE_TOPICS_ENABLE TRUE
Arrangement  Start script  temn.msf.stream.kafka.bootstrap.servers <eventstore-host-ip>:22004
Adapter Service  Start script  TEMN_MSF_ADAPTER_CONFIG_CLASSPATH FALSE
Account Aggregation Start script  temn.msf.stream.kafka.bootstrap.servers <eventstore-host-ip>:22004
     temn.msf.stream.kafka.bootstrap.servers <eventstore-host-ip>:22004
    temn.config.service.base.path  http://<generic_config-host-ip>:7006/ms-genericconfig-api/api/v2.0.0/
     temn.msf.scheduler.config TRUE
    temn.msf.ingest.source.stream ms-accountaggregate-event-topic

Set the above properties in the respective Microservices. The order of deployment of microservices is as follows:

  • Event Store MS
  • Generic Config MS
  • Adapter MS
  • Arrangement MS
  • Holdings MS
  • Account Aggregation MS

We need to create the records in generic configuration Microservice which is used to get the configuration-based invocation service. The Generic configuration Microservice has the APIs to create records via API request. We need to provide the following details in the configuration policy file as per the environment we are deploying the Microservices.

Generic Configuration Policy File

The Adapter Microservice will get the policy file based on the event type through an GET api call. It wil then process the data inside the policy file and invoke the FABRIC alert engine via HTTP request. Generic Configuration policy file contains the following sections inside the file. We should construct the policy file based on the needs. Given below the reference Configuration file.

Following are the steps to construct the config policy file:

  • Create the JOLT SPEC transformation, if there is a need to map the data field from event to fabric environment.
  • Create the Camel route XML as per the available deployment environment.
  • Set the Fabric Endpoint in <toD uri> tag.
  • Set the Camel HTTP method in <setHeader name=""> tag.
  • Set the Authorization key in <setHeader name="AUTHORIZATION"> tag.
  • Set the URL to be invoked in <toD uri> tag.
  • Set the transformation bean in <to uri> tag.
  • Set the jolt transformer class in <bean id> tag.
  • Once the Camel configuration is complete, encode the data base64 format and place it in Test Application Context.
  • Create the JOLT Transformation schema and encode the data as base64 format. Keep it in data.transform.spec.
  • After placing the data in the respective tags, encode the data as base64 and keep it under "data" under the "configData".
  • Once the configuration files are constructed, we can give it as request body in generic config APIs. Please go to the section Generic Configuration Policy Creation.

Given Below the Generic Config policy sample Request Body.

Policy File
{
  "id": "ACCOUNT_LOAD",
  "name": "adapter-framework_notification.invokeApi policy file",
  "version": "1.0.0",
  "configData": {
    "data": "cm91dGVJZD1kaXJlY3Q6aW52b2tlRmFicmljU2VydmljZQ0KZGF0YS50cmFuc2Zvcm0uc3BlYz1XdzBLSUNCN0RRb2dJQ0FnSW05d1pYSmhkR2x2YmlJNklDSnphR2xtZENJc0RRb2dJQ0FnSW5Od1pXTWlPaUI3RFFvZ0lDQWdJQ0FpWlhabGJuUlVlWEJsSWpvZ0ltVjJaVzUwVkhsd1pTSXNEUW9nSUNBZ0lDQWlaWFpsYm5SVGRXSlVlWEJsSWpvZ0ltVjJaVzUwVTNWaWRIbHdaU0lzRFFvZ0lDQWdJQ0FpWlhabGJuUlRkR0YwZFhNaU9pQWlaWFpsYm5SVGRHRjBkWE1pTEEwS0lDQWdJQ0FnSW1WMlpXNTBSR0YwWVNJNklIc05DaUFnSUNBZ0lDQWdJbUpoYm10T1lXMWxJam9nSW1WMlpXNTBSR0YwWVM1aVlXNXJUbUZ0WlNJc0RRb2dJQ0FnSUNBZ0lDSmhZMk52ZFc1MFRHbHpkQ0k2SUNKbGRtVnVkRVJoZEdFdVlXTmpiM1Z1ZEV4cGMzUWlMQTBLSUNBZ0lDQWdJQ0FpWVdOamIzVnVkRlI1Y0dWelRHbHpkQ0k2SUNKbGRtVnVkRVJoZEdFdVlXTmpiM1Z1ZEZSNWNHVnpUR2x6ZENJc0RRb2dJQ0FnSUNBZ0lDSm1ZV2xzWldSQlkyTnZkVzUwVEdsemRDSTZJQ0psZG1WdWRFUmhkR0V1Wm1GcGJHVmtRV05qYjNWdWRFeHBjM1FpTEEwS0lDQWdJQ0FnSUNBaWMzVmpZMlZ6YzBOdmRXNTBJam9nSW1WMlpXNTBSR0YwWVM1emRXTmpaWE56UTI5MWJuUWlMQTBLSUNBZ0lDQWdJQ0FpWm1GcGJFTnZkVzUwSWpvZ0ltVjJaVzUwUkdGMFlTNW1ZV2xzUTI5MWJuUWlMQTBLSUNBZ0lDQWdJQ0FpWVdOamIzVnVkRTUxYldKbGNpSTZJQ0psZG1WdWRFUmhkR0V1WVdOamIzVnVkRTUxYldKbGNpSU5DaUFnSUNBZ0lIMHNEUW9nSUNBZ0lDQWlkWE5sY2tSaGRHRWlPaUI3RFFvZ0lDQWdJQ0FnSUNKaGNIQkpaQ0k2SUNKMWMyVnlSR0YwWVM1aGNIQnBaQ0lzRFFvZ0lDQWdJQ0FnSUNKamIzSmxRM1Z6ZEc5dFpYSkpaQ0k2SUNKMWMyVnlSR0YwWVM1amIzSmxZM1Z6ZEc5dFpYSnBaQ0lzRFFvZ0lDQWdJQ0FnSUNKbGVIUmxjbTVoYkVWdFlXbHNJam9nSW5WelpYSkVZWFJoTG1WNGRHVnlibUZzWlcxaGFXd2lMQTBLSUNBZ0lDQWdJQ0FpWlhoMFpYSnVZV3hRYUc5dVpTSTZJQ0oxYzJWeVJHRjBZUzVsZUhSbGNtNWhiSEJvYjI1bElpd05DaUFnSUNBZ0lDQWdJbU4xYzNSdmJXVnlTV1FpT2lBaWRYTmxja1JoZEdFdVkzVnpkRzl0WlhKSlpDSU5DaUFnSUNBZ0lIME5DaUFnSUNCOURRb2dJSDBOQ2wwDQpyb3V0ZXhtbD1UZXN0QXBwbGljYXRpb25Db250ZXh0DQpUZXN0QXBwbGljYXRpb25Db250ZXh0PVBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NE5DZzBLUEdKbFlXNXpJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbk53Y21sdVoyWnlZVzFsZDI5eWF5NXZjbWN2YzJOb1pXMWhMMkpsWVc1eklnMEtJQ0FnSUNBZ0lIaHRiRzV6T25oemFUMGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TVM5WVRVeFRZMmhsYldFdGFXNXpkR0Z1WTJVaURRb2dJQ0FnSUNBZ2VHMXNibk02WTJGdFpXdzlJbWgwZEhBNkx5OWpZVzFsYkM1aGNHRmphR1V1YjNKbkwzTmphR1Z0WVM5emNISnBibWNpRFFvZ0lDQWdJQ0FnZUhOcE9uTmphR1Z0WVV4dlkyRjBhVzl1UFNJZ0lDQWdJQ0FnSUdoMGRIQTZMeTkzZDNjdWMzQnlhVzVuWm5KaGJXVjNiM0pyTG05eVp5OXpZMmhsYldFdlltVmhibk1nSUNBZ0lDQWdJQ0FnSUNCb2RIUndPaTh2ZDNkM0xuTndjbWx1WjJaeVlXMWxkMjl5YXk1dmNtY3ZjMk5vWlcxaEwySmxZVzV6TDNOd2NtbHVaeTFpWldGdWN5NTRjMlFnSUNBZ0lDQWdJR2gwZEhBNkx5OWpZVzFsYkM1aGNHRmphR1V1YjNKbkwzTmphR1Z0WVM5emNISnBibWNnSUNBZ0lDQWdJR2gwZEhBNkx5OWpZVzFsYkM1aGNHRmphR1V1YjNKbkwzTmphR1Z0WVM5emNISnBibWN2WTJGdFpXd3RjM0J5YVc1bkxuaHpaQ0krRFFvTkNpQWdJRHhqWVcxbGJFTnZiblJsZUhRZ2VHMXNibk05SW1oMGRIQTZMeTlqWVcxbGJDNWhjR0ZqYUdVdWIzSm5MM05qYUdWdFlTOXpjSEpwYm1jaVBnMEtDUTBLQ1NBZ0lEeHliM1YwWlNCcFpEMGlaR2x5WldOMExuQjFkRTl5WkdWeVZISmhibk5tWlhJdWRHOVZjbXdpUGcwS0lDQWdJQ0FnSUNBZ0lDQWdQR1p5YjIwZ2RYSnBQU0prYVhKbFkzUTZhVzUyYjJ0bFJtRmljbWxqVTJWeWRtbGpaU0l2UGcwS0lDQWdJQ0FnSUNBZ0lDQWdQSE5sZEVobFlXUmxjaUJ1WVcxbFBTSkRZVzFsYkVoMGRIQk5aWFJvYjJRaVBnMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeGpiMjV6ZEdGdWRENVFUMU5VUEM5amIyNXpkR0Z1ZEQ0TkNpQWdJQ0FnSUNBZ0lDQWdJRHd2YzJWMFNHVmhaR1Z5UGcwS0NRa0pJRHh6WlhSSVpXRmtaWElnYm1GdFpUMGlRVlZVU0U5U1NWcEJWRWxQVGlJK0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITnBiWEJzWlQ1Q1lYTnBZeUJhUkd4c1drUlZlRnBVVlRKUFJHTXdUVVJLYkU1SFVYcFpiVWswVFcxRk1FMUVUbTFhVjAxNldYcE5OazB5V1RWWlZFSnNXbFJOZVU1cVZtcE9SRUpzV1dwTmVrOVVhR3BaYWtKclQwUm5NMDU2UVRGTk1sazlQQzl6YVcxd2JHVStEUW9nSUNBZ0lDQWdJQ0FnSUNBOEwzTmxkRWhsWVdSbGNqNE5DZ2tKQ1R4c2IyY2diV1Z6YzJGblpUMGlZbVZtYjNKbElHSnZaSGtnWTJoaGJtZGxJQ0E2SUNSN1ltOWtlWDBpTHo0TkNna0pDVHgwYnlCMWNtazlJbUpsWVc0NmFtOXNkRlJ5WVc1elptOXliV1Z5UDIxbGRHaHZaRDF3Y205alpYTnpLQ1I3WW05a2VYMHNKSHRsZUdOb1lXNW5aWDBwSWk4K0RRb0pDUWs4Ykc5bklHMWxjM05oWjJVOUltRm1kR1Z5SUdKdlpIa2dZMmhoYm1kbElDQTZJQ1I3WW05a2VYMGlMejROQ2drSkNUeHNiMmNnYldWemMyRm5aVDBpU1c1MmIydGxJRVpoWW5KcFl5QmxibVJ3YjJsdWRDSXZQZzBLQ1FrSlBIUnZSQ0IxY21rOUltaDBkSEJ6T2k4dmRHVnRhVzVtYVc1cGRIbHhZVE11ZEdWdFpXNXZjeTFqYkc5MVpDNXVaWFF2YzJWeWRtbGpaWE12WkdGMFlTOTJNUzlRZFhOb1JYaDBaWEp1WVd4RmRtVnVkSE12YjJKcVpXTjBjeTlRZFhOb1JYWmxiblFpTHo0TkNna0pDVHhzYjJjZ2JXVnpjMkZuWlQwaWNtVnpjRzl1YzJVZ0lEb2dKSHRpYjJSNWZTSXZQZ2tKQ1FrSkNRMEtJQ0FnSUNBZ0lDQThMM0p2ZFhSbFBna2dJQTBLSUNBZ0lEd3ZZMkZ0Wld4RGIyNTBaWGgwUGcwS0lDQWdJRHhpWldGdUlHbGtQU0p0YjJOclVtVnpjRzl1WkdWeUlpQmpiR0Z6Y3owaVkyOXRMblJsYldWdWIzTXViV2xqY205elpYSjJhV05sTG0xbFpHbGhkRzl5TG1WdVoybHVaUzVOYjJOclVtVnpjRzl1WkdWeVZYUnBiQ0l2UGcwS0lDQWdJRHhpWldGdUlHbGtQU0p0WlhOellXZGxVSEp2WTJWemMyOXlJaUJqYkdGemN6MGlZMjl0TG5SbGJXVnViM011YldsamNtOXpaWEoyYVdObExtMWxaR2xoZEc5eUxtVnVaMmx1WlM1TlpYTnpZV2RsVUhKdlkyVnpjMjl5SWk4K0RRb2dJQ0FnUEdKbFlXNGdhV1E5SWtwVFQwNUJaMmR5WldkaGRHOXlJaUJqYkdGemN6MGlZMjl0TG5SbGJXVnViM011YldsamNtOXpaWEoyYVdObExtMWxaR2xoZEc5eUxtVnVaMmx1WlM1S1UwOU9RV2RuY21WbllYUnZjaUl2UGcwS0NUeGlaV0Z1SUdsa1BTSnFiMngwVkhKaGJuTm1iM0p0WlhJaUlHTnNZWE56UFNKamIyMHVkR1Z0Wlc1dmN5NXRhV055YjNObGNuWnBZMlV1YldWa2FXRjBiM0l1Wlc1bmFXNWxMa0ZrWVhCMFpYSktiMngwUW1GelpXUlVjbUZ1YzJadmNtMWxjaUl2UGdrTkNnazhMMkpsWVc1elBn",
    "configType": "properties"
  }
}

Sections of the policy file payload are given below:

  1. id - Record ID - Configuration name.
  2. name - Describes the name of the configuration record under which contains the group name as well.
  3. Version - Version of the configuration record.
  4. Configuration Data - It contains the information in the form of base64 encoded data. It contains the JOLT spec transformation, route ID and route Xml.
  5. Config Type - Properties.

Sections of Configuration Data

The Data Section consists of three tags namely routeId, data.transform.spec and routexml.

Decoded Data
routeId=direct:invokeFabricService
 
data.transform.spec=Ww0KICB7DQogICAgIm9wZXJhdGlvbiI6ICJzaGlmdCIsDQogICAgInNwZWMiOiB7DQogICAgICAiZXZlbnRUeXBlIjogImV2ZW50VHlwZSIsDQogICAgICAiZXZlbnRTdWJUeXBlIjogImV2ZW50U3VidHlwZSIsDQogICAgICAiZXZlbnRTdGF0dXMiOiAiZXZlbnRTdGF0dXMiLA0KICAgICAgImV2ZW50RGF0YSI6IHsNCiAgICAgICAgImJhbmtOYW1lIjogImV2ZW50RGF0YS5iYW5rTmFtZSIsDQogICAgICAgICJhY2NvdW50TGlzdCI6ICJldmVudERhdGEuYWNjb3VudExpc3QiLA0KICAgICAgICAiYWNjb3VudFR5cGVzTGlzdCI6ICJldmVudERhdGEuYWNjb3VudFR5cGVzTGlzdCIsDQogICAgICAgICJmYWlsZWRBY2NvdW50TGlzdCI6ICJldmVudERhdGEuZmFpbGVkQWNjb3VudExpc3QiLA0KICAgICAgICAic3VjY2Vzc0NvdW50IjogImV2ZW50RGF0YS5zdWNjZXNzQ291bnQiLA0KICAgICAgICAiZmFpbENvdW50IjogImV2ZW50RGF0YS5mYWlsQ291bnQiLA0KICAgICAgICAiYWNjb3VudE51bWJlciI6ICJldmVudERhdGEuYWNjb3VudE51bWJlciINCiAgICAgIH0sDQogICAgICAidXNlckRhdGEiOiB7DQogICAgICAgICJhcHBJZCI6ICJ1c2VyRGF0YS5hcHBpZCIsDQogICAgICAgICJjb3JlQ3VzdG9tZXJJZCI6ICJ1c2VyRGF0YS5jb3JlY3VzdG9tZXJpZCIsDQogICAgICAgICJleHRlcm5hbEVtYWlsIjogInVzZXJEYXRhLmV4dGVybmFsZW1haWwiLA0KICAgICAgICAiZXh0ZXJuYWxQaG9uZSI6ICJ1c2VyRGF0YS5leHRlcm5hbHBob25lIiwNCiAgICAgICAgImN1c3RvbWVySWQiOiAidXNlckRhdGEuY3VzdG9tZXJJZCINCiAgICAgIH0NCiAgICB9DQogIH0NCl0
 
routexml=TestApplicationContext
 
TestApplicationContext=PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCg0KPGJlYW5zIHhtbG5zPSJodHRwOi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvc2NoZW1hL2JlYW5zIg0KICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiDQogICAgICAgeG1sbnM6Y2FtZWw9Imh0dHA6Ly9jYW1lbC5hcGFjaGUub3JnL3NjaGVtYS9zcHJpbmciDQogICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSIgICAgICAgIGh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9zY2hlbWEvYmVhbnMgICAgICAgICAgICBodHRwOi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvc2NoZW1hL2JlYW5zL3NwcmluZy1iZWFucy54c2QgICAgICAgIGh0dHA6Ly9jYW1lbC5hcGFjaGUub3JnL3NjaGVtYS9zcHJpbmcgICAgICAgIGh0dHA6Ly9jYW1lbC5hcGFjaGUub3JnL3NjaGVtYS9zcHJpbmcvY2FtZWwtc3ByaW5nLnhzZCI+DQoNCiAgIDxjYW1lbENvbnRleHQgeG1sbnM9Imh0dHA6Ly9jYW1lbC5hcGFjaGUub3JnL3NjaGVtYS9zcHJpbmciPg0KCQ0KCSAgIDxyb3V0ZSBpZD0iZGlyZWN0LnB1dE9yZGVyVHJhbnNmZXIudG9VcmwiPg0KICAgICAgICAgICAgPGZyb20gdXJpPSJkaXJlY3Q6aW52b2tlRmFicmljU2VydmljZSIvPg0KICAgICAgICAgICAgPHNldEhlYWRlciBuYW1lPSJDYW1lbEh0dHBNZXRob2QiPg0KICAgICAgICAgICAgICAgIDxjb25zdGFudD5QT1NUPC9jb25zdGFudD4NCiAgICAgICAgICAgIDwvc2V0SGVhZGVyPg0KCQkJIDxzZXRIZWFkZXIgbmFtZT0iQVVUSE9SSVpBVElPTiI+DQogICAgICAgICAgICAgICAgPHNpbXBsZT5CYXNpYyBaRGxsWkRVeFpUVTJPRGMwTURKbE5HUXpZbUk0TW1FME1ETm1aV016WXpNNk0yWTVZVEJsWlRNeU5qVmpOREJsWWpNek9UaGpZakJrT0RnM056QTFNMlk9PC9zaW1wbGU+DQogICAgICAgICAgICA8L3NldEhlYWRlcj4NCgkJCTxsb2cgbWVzc2FnZT0iYmVmb3JlIGJvZHkgY2hhbmdlICA6ICR7Ym9keX0iLz4NCgkJCTx0byB1cmk9ImJlYW46am9sdFRyYW5zZm9ybWVyP21ldGhvZD1wcm9jZXNzKCR7Ym9keX0sJHtleGNoYW5nZX0pIi8+DQoJCQk8bG9nIG1lc3NhZ2U9ImFmdGVyIGJvZHkgY2hhbmdlICA6ICR7Ym9keX0iLz4NCgkJCTxsb2cgbWVzc2FnZT0iSW52b2tlIEZhYnJpYyBlbmRwb2ludCIvPg0KCQkJPHRvRCB1cmk9Imh0dHBzOi8vdGVtaW5maW5pdHlxYTMudGVtZW5vcy1jbG91ZC5uZXQvc2VydmljZXMvZGF0YS92MS9QdXNoRXh0ZXJuYWxFdmVudHMvb2JqZWN0cy9QdXNoRXZlbnQiLz4NCgkJCTxsb2cgbWVzc2FnZT0icmVzcG9uc2UgIDogJHtib2R5fSIvPgkJCQkJCQ0KICAgICAgICA8L3JvdXRlPgkgIA0KICAgIDwvY2FtZWxDb250ZXh0Pg0KICAgIDxiZWFuIGlkPSJtb2NrUmVzcG9uZGVyIiBjbGFzcz0iY29tLnRlbWVub3MubWljcm9zZXJ2aWNlLm1lZGlhdG9yLmVuZ2luZS5Nb2NrUmVzcG9uZGVyVXRpbCIvPg0KICAgIDxiZWFuIGlkPSJtZXNzYWdlUHJvY2Vzc29yIiBjbGFzcz0iY29tLnRlbWVub3MubWljcm9zZXJ2aWNlLm1lZGlhdG9yLmVuZ2luZS5NZXNzYWdlUHJvY2Vzc29yIi8+DQogICAgPGJlYW4gaWQ9IkpTT05BZ2dyZWdhdG9yIiBjbGFzcz0iY29tLnRlbWVub3MubWljcm9zZXJ2aWNlLm1lZGlhdG9yLmVuZ2luZS5KU09OQWdncmVnYXRvciIvPg0KCTxiZWFuIGlkPSJqb2x0VHJhbnNmb3JtZXIiIGNsYXNzPSJjb20udGVtZW5vcy5taWNyb3NlcnZpY2UubWVkaWF0b3IuZW5naW5lLkFkYXB0ZXJKb2x0QmFzZWRUcmFuc2Zvcm1lciIvPgkNCgk8L2JlYW5zPg
  • routeId - will specify the information regarding the invocation channel. We are giving direct:invokeFabricService which is used to invoke Fabric services.
  • data.transaform.spec - It is used to transform / map the fields from source event to target service layer.
JOLT Transform
[
  {
    "operation": "shift",
    "spec": {
      "eventType": "eventType",
      "eventSubType": "eventSubtype",
      "eventStatus": "eventStatus",
      "eventData": {
        "bankName": "eventData.bankName",
        "accountList": "eventData.accountList",
        "accountTypesList": "eventData.accountTypesList",
        "failedAccountList": "eventData.failedAccountList",
        "successCount": "eventData.successCount",
        "failCount": "eventData.failCount",
        "accountNumber": "eventData.accountNumber"
      },
      "userData": {
        "appId": "userData.appid",
        "coreCustomerId": "userData.corecustomerid",
        "externalEmail": "userData.externalemail",
        "externalPhone": "userData.externalphone",
        "customerId": "userData.customerId"
      }
    }
  }
]
  • Test Application Context - It Contains the Camel routing schema in base64 encoded format.

The following schema is an example for the application context. It has tags to specify the header, URL, transformer class and Authorization.

Policy Configuration                                                                                                                                                                                                                                                                                                                                                                                                                                                      <
  <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="        http://www.springframework.org/schema/beans            http://www.springframework.org/schema/beans/spring-beans.xsd        http://camel.apache.org/schema/spring        http://camel.apache.org/schema/spring/camel-spring.xsd">
   <camelContext xmlns="http://camel.apache.org/schema/spring">
      <route id="direct.putOrderTransfer.toUrl">
         <from uri="direct:invokeFabricService" />
         <setHeader name="CamelHttpMethod">
            <constant>POST</constant>
         </setHeader>
         <setHeader name="AUTHORIZATION">
            <simple>Basic ZDllZDUxZTU2ODc0MDJlNGQzYmI4MmE0MDNmZWMzYzM6M2Y5YTBlZTMyNjVjNDBlYjMzOThjYjBkODg3NzA1M2Y=</simple>
         </setHeader>
         <log message="before body change  : ${body}" />
         <to uri="bean:joltTransformer?method=process(${body},${exchange})" />
         <log message="after body change  : ${body}" />
         <log message="Invoke Fabric endpoint" />
         <toD uri="https://teminfinityqa3.temenos-cloud.net/services/data/v1/PushExternalEvents/objects/PushEvent" />
         <log message="response  : ${body}" />
      </route>
   </camelContext>
   <bean id="mockResponder" class="com.temenos.microservice.mediator.engine.MockResponderUtil" />
   <bean id="messageProcessor" class="com.temenos.microservice.mediator.engine.MessageProcessor" />
   <bean id="JSONAggregator" class="com.temenos.microservice.mediator.engine.JSONAggregator" />
   <bean id="joltTransformer" class="com.temenos.microservice.mediator.engine.AdapterJoltBasedTransformer" />
</beans>
  • In Test Application Context, we will specify the Fabric endpoint and the method to make API call. Camel context will have the headers and bean id to transform the JOLT spec. Specify the type of REST method.

Header Tag - CamelHttpMethod We can specify the type of request. Ex: POST, PUT, UPDATE, DELETE.

Header
<setHeader name="CamelHttpMethod">
    <constant>POST</constant>
</setHeader>
  • Provide the app key and app secret in encoded format. It can be taken from the Fabric App environment.

Header Tag - Authorization

The app key and app secret are constructed as given below:

appkey:appsecret → d9ed51e5687402e4d3bb82a403fec3c3:3f9a0ee3265c40eb3398cb0d8877053f

<setHeader name="AUTHORIZATION">
    <simple>Basic ZDllZDUxZTU2ODc0MDJlNGQzYmI4MmE0MDNmZWMzYzM6M2Y5YTBlZTMyNjVjNDBlYjMzOThjYjBkODg3NzA1M2Y=</simple>
</setHeader>
  • <toD uri> tag will have the endpoint which needs to be invoked.
<toD uri="https://teminfinityqa3.temenos-cloud.net/services/data/v1/PushExternalEvents/objects/PushEvent"/>
  • <to uri> tag will have the transformer bean and body to transform.
<to uri="bean:joltTransformer?method=process(${body},${exchange})" />
  • <bean id> tag will have the transformer class being used to transform JOLT spec.
JOLT Transformer Class
    <bean id="joltTransformer" class="com.temenos.microservice.mediator.engine.AdapterJoltBasedTransformer"/>

Generic Configuration Policy Creation through API

Generic Configuration microservice will hold the encoded data to make API call through adapter service microservice. Adapter service will make an API call to get the policy file with the event type name Ex. UNSUPPORTED_ACCCOUNT.

We can create the policy file through POST API given below.

The Generic Config API URL will look like this - http://23.102.43.92:7006/ms-genericconfig-api/api/v2.0.0/system/configurationGroups/com.temenos.adapterFramework.adapter/configuration/UNSUPPORTED_ACCOUNT

  • 23.102.43.92 - <hostname> in which the Generic Config MS is running.
  • com.temenos.adapterFramework.adapter - configuration group under which the policy files are placed.
  • UNSUPPORTED_ACCOUNT - Configuration name for the policy created, in our case it will be the Notification Event Name.

Generic Config policy postman collection: Notification_Generic_Config_policy.json

Copyright © 2020- Temenos Headquarters SA

Published on :
Tuesday, September 2, 2025 12:39:30 PM IST